/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package contoladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import vista.VOrden;

import modelos.MOrden;
import modelos.MProducto;

/**
 *
 * @author usuario
 */
public class COrden implements ActionListener{

    private VOrden vista;
    private MOrden modelo;
    private Vector <MProducto> productos;

    public COrden(VOrden aThis) {
        vista=aThis;
        modelo= new MOrden();
        productos= new MProducto().listar();
        cargarCombosVista();
        vista.addListener(this);
       // vista.limpiar(""+modelo.contarOrdenes(),new Date().toLocaleString());
}
    
    private boolean validarCamposVacios(){
    	if(vista.getNom().equals("") || vista.getCi().equals("") || vista.getTot().equals(""))
    		return false;
    	else
    		return true;    		
    }
  


    public void cargarCombosVista(){
        Vector<String> descripciones = new Vector<String>();
        for (int i = 0; i < productos.size(); i++)
            descripciones.add(productos.elementAt(i).getDesc_Producto());
        vista.cargarProductos(descripciones);
    }


     public void actionPerformed(ActionEvent ae) {
    	 if(ae.getActionCommand().equals("Agregar")){
    		 agregar();
    	 }
    	 else if(ae.getActionCommand().equals("Salir")){
             salir();
         }
    	 else if(ae.getActionCommand().equals("Cancelar")){
    		 cancelar();
         }
    	 else if(ae.getActionCommand().equals("Mas")){
    		 mas();
         } 
    	 else if(ae.getActionCommand().equals("Menos")){
    		 menos();             
    	 }             
    }

      private void menos() {
		vista.quitar();
		
	}


	private void mas() {
		int i = 0;
		if(producto(vista.getPro()).hayDisponibilidadIngredientes(vista.getCantidad()))
			vista.agregar(producto(vista.getPro()).getPrecio_Producto());
		
	}


	public void cancelar() {
		vista.limpiar(""+modelo.contarOrdenes(),new Date().toLocaleString());
	}


	private void salir() {
		vista.hide();
	}


	private void agregar() {
		if(validarCamposVacios()){
				modelo.setCed_Cliente(vista.getCi());
				modelo.setCod_Orden(vista.getCod());
				modelo.setNom_Cliente(vista.getNom());
				modelo.setTotal(Double.parseDouble(vista.getTot()));
				modelo.setEstatus("A");
				if(modelo.registar()){
					registrarProductos();
					JOptionPane.showMessageDialog(new JFrame(),"Orden registrada con exito","Proyecto 2",JOptionPane.INFORMATION_MESSAGE);
					vista.limpiar(""+modelo.contarOrdenes(),new Date().toLocaleString());
				}
				else
					JOptionPane.showMessageDialog(new JFrame(),"El codigo no esta registrado","Proyecto 2",JOptionPane.WARNING_MESSAGE);
			}
		else
			JOptionPane.showMessageDialog(new JFrame(),"El codigo se encuentra vacio por favor ingreselo","Proyecto 2",JOptionPane.WARNING_MESSAGE);

			
		
	}


	private void registrarProductos() {
		Vector<String> codigos = new Vector<String>();
		Vector<Double> cantidades = new Vector<Double>();
		DefaultTableModel m = vista.getModelo();
		int i = 0;
		while(i<m.getRowCount()){
			codigos.add(producto((String) m.getValueAt(i, 0)).getCod_Producto());
			cantidades.add((Double) m.getValueAt(i, 1));
			producto((String) m.getValueAt(i, 0)).actualizarStockIngredientes();
			i++;			
		}
	}

    
    public MProducto producto(String descripicion){
        for (int i = 0; i < productos.size(); i++)
            if(productos.elementAt(i).getDesc_Producto().equals(descripicion))
                return productos.elementAt(i);
        return null;
    }
}
